<?php
session_start();
require "include/dbms.inc.php";
require "include/template.inc.php";
require "include/setcontents.inc.php";
require "include/calendario.inc.php";
require "include/accesscontrol.inc.php";
require "include/formcontrol.inc.php";
require "include/tags/htmlhelper.inc.php";

accesscontrol::controllo_privilegi();

function displaydefault(){
    $today_date=time();
    $oid=mysql_query("DELETE FROM prenotazione WHERE prenotazione.data_pren < '{$today_date}'");//elimino le prenotazioni la cui data precede quella odierna
    if (!$oid){
        $message="Errore nella prenotazione. Riprovare o contattare l'amministratore";
        $style="alert";
        displaydefault();
    }
    if (!isset($_GET['by'])){
        $_GET['by']="nome";
    }
    $result = setcontents::getResult("SELECT * FROM servizio_erogato ORDER BY ".$_GET['by']." ".$_GET['ord']);

    global $body;
    $body = new Template ("dtml/prenotazione_utente.html");
    $body->setContent("servizi_erog", $result);
    $result = setcontents::getResult("SELECT
            servizio_erogato.nome as servizio, servizio_erogato.durata, servizio_erogato.prezzo,prenotazione.data_op,prenotazione.data_pren
            FROM
            prenotazione
            LEFT JOIN
            servizio_erogato
            ON
            prenotazione.id_serv_erog=servizio_erogato.id
            WHERE prenotazione.email_utente='{$_SESSION['user']['email']}' ORDER BY prenotazione.data_pren");//prenotazioni effettuate
    if (isset($result)){//se ci sono prenotazioni visualizza elenco
        $body->setContent("prenotazioni", $result);
    }else{
        $body->setContent("stato", "nessuna prenotazione effettuata");
    }
}

switch ($_POST['op']){

    case 'prenota':
        if (!isset($_POST['check'])){
            $message="Nessun servizio selezionato";
            $style="alert";
            displaydefault();
            break;
        }
        $ut=$_POST['check'];
        $a=0;
        foreach ($ut as $k => $v){
            $serv_pren[$a]=setcontents::getResult("SELECT * FROM servizio_erogato WHERE servizio_erogato.id='{$v}'");
            $durata+=($serv_pren[$a][0]['durata']*60);//moltiplico per 60 perché la durata è espressa in minuti
            $servizi[$a]=$v;
            $a++;
        }
        
        $result=setcontents::getResult("SELECT data_pren,SUM(durata)
                                          FROM
                                          prenotazione
                                          LEFT JOIN
                                          servizio_erogato
                                          ON
                                          prenotazione.id_serv_erog=servizio_erogato.id
                                          GROUP BY data_pren ORDER BY data_pren");//leggo le prenotazioni sul database
        if (isset($result)){//Se ci sono prenotazioni escludi gli orari relativi da quelli visualizzati all'utente come disponibili.
            $date_list=calendario::calcola_orario($result,$durata);//Passo come parametro le prenotazioni correnti più la durata dei servizi da prenotare
        }else{//se non ci sono prenotazioni imposta gli orari in base ad apertura e chiusura, tenendo conto del giorno di riposo e della durata dei servizi selezionati
            $date_list=calendario::calcola_orario(null,$durata);
            }//fine ramo else (nessuna prenotazione)
            $body= new Template("dtml/pannello_pren_ut.html");
            $body->setContent("action",$_SERVER['SCRIPT_NAME']);
            $body->setContent("hidden",$servizi);
            $body->setContent("calendario",$date_list);
            $body->setContent("riposo",htmlhelper::day(null,date("D",$orario[0]['giorno_chiusura'])));
        break;

        case 'conferma':
            $data_op=time();
            $servizi=$_POST['servizi'];
            $utente = $_SESSION['user']['email'];
            foreach ($servizi as $k=>$v){
                $oid=mysql_query("INSERT INTO prenotazione VALUES (
                                 '{$v}',
                                 '{$utente}',
                                 '{$_POST['ora']}',
                                 '{$data_op}')");
                 if (!$oid){
                     $error=mysql_errno();
                     if ($error==1062){
                         $message="Prenotazioni aggiornate";
                         $style="message";
                     }else{
                         $message="Si è riscontrato un errore nella prenotazione. Ci scusiamo per il disagio";
                         $style="alert";
                     }
                 }else{
                     $message="Prenotazione effettuata con successo";
                     $style="message";
                 }
            }
       
             displaydefault();
            break;

    default:
        displaydefault();
}

setcontents::setTemplate();
setcontents::setMenu($message,$style);
setcontents::setBody($body);

$main->close();

?>
